/**
 * 格式化日期时间
 */
/**
 * 1. 对Date的扩展，将 Date 转化为指定格式的String
 * 2. 月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
 * 3. 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * Example:
 * (new Date()).format("yyyy-MM-dd HH:mm:ss.S") ==> 2006-07-02 08:09:04.423
 * (new Date()).format("yyyy-M-d H:m:s.S")      ==> 2006-7-2 8:9:4.18
 */

export class Formattimes {

    private static Formattimes: Formattimes;

    public static getInstance(): Formattimes {
        if (!Formattimes.Formattimes) {
            Formattimes.Formattimes = new Formattimes();
        }
        return this.Formattimes;
    }
    /**
     *  ts版本
     * 解析时间戳，转换为标准时间格式
     *
     * **/

    private  formatTimes( strDate: string | Date,
                         strFormat: string = 'yyyy-MM-dd') {
        if (!strDate){ return; }
        switch (typeof strDate) {
            case 'string':
                strDate = new Date(strDate.replace(/-/, '/'));
                break;
            case 'number':
                strDate = new Date(strDate);
                break;
        }
        if (strDate instanceof Date){
            const dict: any = {
                yyyy: strDate.getFullYear(),
                M: strDate.getMonth() + 1,
                d: strDate.getDate(),
                H: strDate.getHours(),
                m: strDate.getMinutes(),
                s: strDate.getSeconds(),
                MM: ('' + (strDate.getMonth() + 101)).substr(1),
                dd: ('' + (strDate.getDate() + 100)).substr(1),
                HH: ('' + (strDate.getHours() + 100)).substr(1),
                mm: ('' + (strDate.getMinutes() + 100)).substr(1),
                ss: ('' + (strDate.getSeconds() + 100)).substr(1),
            };
            return strFormat.replace(/(yyyy|MM?|dd?|HH?|mm?|ss?)/g, function () {
                return dict[arguments[0]];
            });
        }
    }


    // /**
    // js版本
    //  * 解析时间戳，转换为标准时间格式
    //  *
    //  * **/
    //
    // public  formatTimes(timestamp: any, fmt: any) {
    //     if (timestamp === undefined || timestamp === '' || timestamp === null) {
    //         return null;
    //     }
    //     var time: any = new Date(timestamp);
    //     return time.format(fmt);
    // }

// 日期，在原有日期基础上，增加days天数，默认增加1天

   private  addDate(date: any, days: any) {
        if (days == undefined || days == '') {
            days = 1;
        }
        date = new Date(date);
        date.setDate(date.getDate() + days);
        var month = date.getMonth() + 1;
        var day = date.getDate();
        return date.getFullYear() + '-' + this.getFormatDate(month) + '-' + this.getFormatDate(day);
    }

// 日期月份/天的显示，如果是1位数，则在前面加上'0'


   private getFormatDate(arg: any) {
        if (arg == undefined || arg == '') {
            return '';
        }

        var re = arg + '';
        if (re.length < 2) {
            re = '0' + re;
        }

        return re;
    }
}
declare module "vue/types/vue" {
    interface Vue {
        /**
         * Http net 对象
         *
         * @type {Http}
         * @memberof Vue
         */
        $Formattimes:Formattimes ;
    }
}
